#ifndef DSPSIMULATOR_INSTRUCTION_SPMASKR_H
#define DSPSIMULATOR_INSTRUCTION_SPMASKR_H

#include "dspSimulator/instruction/SPMASK.h"

namespace dspsimulator {
    class SPMASKR : public SPMASK {
    public:
        explicit SPMASKR(u64 address = 0, u32 size = 4) :
                SPMASK(address, size) {
            m_name = "SPMASKR";
        }

        SPMASKR(const SPMASKR &) = default;

        SPMASKR(SPMASKR &&) = default;

        SPMASKR &operator=(const SPMASKR &) = default;

        SPMASKR &operator=(SPMASKR &&) = default;

        std::string to_string() const override;

        std::shared_ptr<Instruction> clone() const override { return std::make_shared<SPMASKR>(*this); }

    protected:
        std::shared_ptr<DspInstruction>
        decode_standard_instruction(const std::shared_ptr<DspInstructionInfo> &dsp_instruction_info) override;

        std::shared_ptr<DspInstruction>
        decode_compact_instruction(const std::shared_ptr<DspInstructionInfo> &dsp_instruction_info) override;
    };
}

#endif //DSPSIMULATOR_INSTRUCTION_SPMASKR_H
